package com.practice.dataStructure.tree;

/**
 * 树的特点
 * 一棵树中的任意两个结点有且仅有唯一的一条路径连通。
 * 一棵树如果有 n 个结点，那么它一定恰好有 n-1 条边。
 * 一棵树不包含回路。
 *
 * 节点：树中的每个元素都可以统称为节点。
 * 根节点：顶层节点或者说没有父节点的节点。
 * 父节点：若一个节点含有子节点，则这个节点称为其子节点的父节点。
 * 子节点：一个节点含有的子树的根节点称为该节点的子节点。
 * 兄弟节点：具有相同父节点的节点互称为兄弟节点。
 * 叶子节点：没有子节点的节点。上图中的 D、F、H、I 都是叶子节点。
 * 节点的高度：该节点到叶子节点的最长路径所包含的边数。
 * 节点的深度：根节点到该节点的路径所包含的边数
 * 节点的层数：节点的深度+1。
 * 树的高度：根节点的高度。
 *
 * 二叉树
 * 二叉树（Binary tree）是每个节点最多只有两个分支（即不存在分支度大于 2 的节点）的树结构。
 * 二叉树 的分支通常被称作“左子树”或“右子树”。并且，二叉树 的分支具有左右次序，不能随意颠倒。
 * 二叉树 的第 i 层至多拥有 2^(i-1) 个节点，深度为 k 的二叉树至多总共有 2^(k+1)-1 个节点（满二叉树的情况）
 *
 * 满二叉树：一个二叉树，如果每一个层的结点数都达到最大值，则这个二叉树就是 满二叉树
 * 完全二叉树：除最后一层外，若其余层都是满的，并且最后一层是满的或者是在右边缺少连续若干节点，则这个二叉树就是 完全二叉树 。
 * 平衡二叉树：可以是一棵空树。如果不是空树，它的左右两个子树的高度差的绝对值不超过 1，并且左右两个子树都是一棵平衡二叉树。
 */
public class Tree<E> {
    TreeNode<E> root;
}
